import js from '@eslint/js'
import pluginVue from 'eslint-plugin-vue'
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
import prettierPlugin from 'eslint-plugin-prettier'

export default [
  {
    name: 'app/files-to-lint',
    files: ['**/*.{js,mjs,jsx,vue}']
  },

  {
    name: 'app/files-to-ignore',
    ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**']
  },

  // 基本配置
  js.configs.recommended,
  ...pluginVue.configs['flat/essential'],
  skipFormatting,

  // 全局语言选项
  {
    languageOptions: {
      ecmaVersion: 'latest',
      globals: {
        ElMessage: 'readonly',
        ElMessageBox: 'readonly',
        ElLoading: 'readonly'
      }
    }
  },

  // Prettier 插件与规则
  {
    plugins: {
      prettier: prettierPlugin
    },
    rules: {
      'prettier/prettier': [
        'warn',
        {
          singleQuote: true, // 单引号
          semi: false, // 无分号
          printWidth: 80, // 每行宽度至多80字符
          trailingComma: 'none', // 不加对象|数组最后逗号
          endOfLine: 'auto' // 换行符号不限制（win mac 不一致）
        }
      ]
    }
  },

  // 自定义规则
  {
    rules: {
      'vue/multi-word-component-names': [
        'warn',
        {
          ignores: ['index'] // 允许 `index.vue` 为单词组件名
        }
      ],
      'vue/no-setup-props-destructure': 'off', // 关闭 props 解构的校验
      'no-undef': 'error' // 未定义变量报错
    }
  }
]
